The subject of the present invention in general pertains to a new Input-Output facility design that exploits high bandwidth integrated network adapters.
In a network computing environment, multitudes of commands and requests for retrieval and storage of data are processed every second. To properly address the complexity of routing these commands and requests, environments with servers have traditionally offered integrated network connectivity to allow direct attachments of clients such as Local Area Networks (LANs). Given the size of most servers, the number of clients usually is in the range of hundreds to thousands and the bandwidth required in the 10-100 Mbits/sec range. However, in recent years the servers have grown and the amount of data they are required to handle has grown with them. As a result, the existing I/O architectures need to be modified to support this order of magnitude increase in the bandwidth.
In addition, new Internet applications have increased the demand for improved latency. The adapters must support a larger number of users and connections to consolidate the network interfaces which are visible externally. The combination of all the above requirements presents a unique challenge to server I/O subsystems.
Furthermore, in large environments such as International Business Machines Enterprise System Architecture/390 (Enterprise System Architecture/390 is a registered trademark of International Business Machines Corporation), there are additional requirements that the I/O subsystem must remain consistent with existing support. Applications must continue to run unmodified, and error recovery and dynamic configuration must be preserved or even improved. Sharing of I/O resources must be enabled as well as the integrity of the data being sent or received. This presents new and complex challenges that need to be resolved.
In order to achieve bandwidths which are dramatically higher and still achieve other required challenges, a new system architecture is needed.
This application is related to the following copending applications: PO9-99-013, Ser. No. 09/253,246; PO9-99-014, Ser. No. 09/253,250; PO9-99-015, Ser. No. 09/253,247; PO9-99-016, Ser. No. 09/253,248; PO9-99-017, Ser. No. 09/252,712; PO9-99-019, Ser. No. 09/252,728; PO9-99-020, Ser. No. 09/252,730; PO9-99-021, Ser. No. 09/253,101; PO9-99-022, Ser. No. 09/253,286; PO9-99-023, Ser. No. 09/252,542; PO9-99-024, Ser. No. 09/253,249; PO9-99-025, Ser. No. 09/252,556; PO9-99-026, Ser. No. 09/253,993; PO9-99-027, Ser. No. 09/253,658; PO9-99-028, Ser. No. 09/252,555; PO9-99-029, Ser. No. 09/255,641; PO9-99-030, Ser. No. 09/255,640; and PO9-99-031, Ser. No. 09/252,727.
An apparatus for transferring data in a network computing environment having a controlling program and a main storage in processing communication with an interface element including one or more adapters. A queuing mechanism is first established in the main storage for asynchronous transmittal of data between the program and said interface element. At least one queue-set is dedicated to input data and another queue-set to output data in the queuing mechanism. Queuing priorities both for said input and output queue-sets are then determined according to importance of data to be processed or transferred or other internal dependencies and a queue-description record is established by passing a QDIO queue command. From this the priority and number of the input/output queues are then established according to the order by which the order specified in the queue descriptor record relative to any other output queues described in that record. Data is then transferred and received according to the queuing priority by interrogating multiple queues in the mechanism simultaneously and determining appropriate location to which data has to be stored to or transferred from.